//package com.mashibing.mall.ware.exception;
//
//import com.mashibing.common.exception.BizCodeEnume;
//import com.mashibing.common.exception.BusinessException;
//import com.mashibing.common.utils.R;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 全球处理异常
// *
// * @author ROGzhongyang
// * @date 2024/11/29 22:35:20
// */
//@Slf4j
//@RestControllerAdvice(basePackages = "com.mashibing.mall.ware.controller")
//public class ExceptionControllerAdvice {
//
////    private static final Log log = Log.get();
//
//    /**
//     * 处理参数验证的异常
//     */
//    @ExceptionHandler(value = MethodArgumentNotValidException.class)
//    @ResponseBody
//    public R argumentValidExceptionHanlder(MethodArgumentNotValidException e){
////        log.error(">>> 方法参数无效：【{}】【{}】", RequestUtil);
//        Map<String, String> map = new HashMap<>();
//        e.getFieldErrors().forEach(fieldError -> {
//            map.put(fieldError.getField(), fieldError.getDefaultMessage());
//            log.error(">>> 请求参数不合法：字段名:{}, 错误信息:{}", fieldError.getField(), fieldError.getDefaultMessage());
//        });
//        return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(), BizCodeEnume.VALID_EXCEPTION.getMsg())
//                .put("data", map);
//    }
//
//    /**
//     * 拦截业务异常
//     */
//    @ExceptionHandler(BusinessException.class)
//    @ResponseBody
//    public R businessError(BusinessException e) {
//        R errorResponseData = R.error(BizCodeEnume.BUSINESS_EXCEPTION.getCode(), BizCodeEnume.BUSINESS_EXCEPTION.getMsg())
//                .put(String.valueOf(e.getCode()), e.getMessage());
//        log.error(">>> 业务异常：【{}】【{}】", e.getCode(), e.getMessage());
//        for (StackTraceElement ste : e.getStackTrace()) {
//            System.err.println(ste);
//        }
//        return errorResponseData;
//    }
//
//    /**
//     * 处理未知异常
//     */
//    @ExceptionHandler(Throwable.class)
//    public R unknownExceptionHanlder(Throwable throwable) {
//        log.error("错误信息:", throwable);
//        return R.error(BizCodeEnume.UNKNOW_EXCEPTION.getCode(), BizCodeEnume.UNKNOW_EXCEPTION.getMsg())
//                .put("data", throwable.getMessage());
//    }
//}
